/**
 * \file Mat4f.hpp
 * Header with macro magic to select the best available Mat4f implementation.
 */

#if defined(SIUT_ALTIVEC)
#include "siut/simd/altivec/Mat4f.hpp"
#elif defined(SIUT_SSE)
#include "siut/simd/sse/Mat4f.hpp"
#else
#include "standard/Mat4f.hpp"
#endif

namespace siut {
  /** \brief Contains SIMD library for three and four component 
   * vectors as well as 4x4 matrices.
   *
   * Based on wether SIUT_ALTIVEC or SIUT_SSE is defined, either SIMD
   * or none SIMD versions are typedefed into this namespace. 
   * To avoid these macros, use files in sse, altivec or standard namespace.
   *
   * The calling function is responsible for aligning objects at 16-byte bounduries.
   */
namespace simd {
#if defined(SIUT_ALTIVEC)
    typedef altivec::Mat4f Mat4f;
#elif defined(SIUT_SSE)
    typedef sse::Mat4f Mat4f;
#else
    typedef standard::Mat4f Mat4f;
#endif
} //namespace simd
} //namespace siut
